import Mock from 'mockjs'

Mock.mock('/user/login', 'post', (config) => {
    const obj = JSON.parse(config.body);
    if (obj.username === 'test') {
        console.log("Mock: login!")
        return {
            code: 1,
            data: {
                id: 1,
            }
        }
    } else return {
        code: 0,
    }
});

Mock.mock('/user/register', 'post', (config) => {
    return {
        code: 1,
    }
});

Mock.mock('/user/getuser', 'post', (config) => {
    const obj = JSON.parse(config.body);
    if (obj.id == 1) {
        return {
            code: 1,
            data: {
                username: '测试版',
                phonenumber: '13800000000',
            }
        }
    } else {
        return {
            code: 0,
        }
    }
});

Mock.mock('/user/getpro', 'post', (config) => {
    return {
        code: 1,
        data: {
            id: 1,
            state: 1,
            projectname: '测试项目',
            promoter: '无名氏',
            description: 'xPSR是程序状态寄存器组。CPSR是当前程序状态寄存器，在任何处理器模式下都可以被访问。CPSR中含有条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每一种处理器模式下都有一个专用的物理状态寄存器，称为SPSR（备份程序状态寄存器）。CPSR包括条件码标志位、保留位和控制位。最高4位N、Z、C、V称为条件码标志，条件执行的指令通过检测这些条件码标志来决定程序指令如何执行：N：运算结果是有符号的二进制补码的情况下，如果结果为负数，则N=1。否则N=0。Z：如果结果为0，则Z=1；否则Z=0。C：加法操作产生进位，则C=1。减法操作产生借位，C=0。V：有符号整数加减运算，若发生溢出，则V=1；否则V=0。对于其他指令V通常不变。'
        }
    }
});
// 页数 页面大小 搜索
Mock.mock('/user/projectpage', 'post', (config) => {
    const obj = JSON.parse(config.body);
    if (obj.page == 1) {
        return {
            code: 1,
            data: {
                records: [{
                    id: 0,
                    projectname: '投票1',
                    description: '张娇，女，教授，博/硕导，IEEE/CCF 高级会员。2008年获北京邮电大学工学学士学位，2014年获得清华大学工学博士学位，加州大学伯克利分校博士联培一年。长期致力于云数据中心网络、网络传输控制协议等研究，在ACM SIGCOMM、USENIX NSDI、ACM EuroSys、IEEE INFOCOM、IEEE/ACM Trans. On Networking等网络领域重要会议/期刊上发表学术论文70余篇，授权国家发明专利30余项，专利转化5项。主持国家重点研发计划（青年科学家项目）、装发预研、国家自然科学面上/青年基金和华为、字节跳动创新基金等20余项项目。担任ACM CoNext、IEEE/ACM IWQoS重要网络国际会议分项联合主席、ACM Multimedia、IEEE INFOCOM、ICPP等技术委员会委员，以及中兴通讯技术杂志社促进产学研合作青年专家委员会首届委员。获中国计算机学会优秀博士学位论文奖、北京市优秀博士毕业生、首届中国科协青年人才托举工程、教育部霍英东青年教师基金中国通信学会技术发明一等奖和中国电子学会创新团队奖等荣誉。',
                }, {
                    id: 1,
                    projectname: '一些投票title',
                    description: '前端description 参考了 https://www.zhangshengrong.com/p/nDa9jWW6Nj/',
                }, {
                    id: 2,
                    projectname: '黑马程序员瑞吉外卖黑马程序员瑞吉外卖',
                    description: '首先在store文件下的index.js文件中封装了一个SET_TOKEN方法，用来将token存储到浏览器，这样我们每次就都可以通过localStorage.getItem(“token”),来从本地拿到我们的token，同时封装了一个REMOVE_INFO方法，在当我们退出登录的时候，清空浏览器中的token信息。由于我们并不是所有的页面都只要在登录的时候才能访问，所以我们要对需要进行登录才能访问的页面设置访问权限，在vue中我们一般将访问路由设置在router下的index.js文件中，对于需要添登录权限的请求路由，我们可以给其增加meta属性，在其中设置一个Boolean类型的属性requireAuth， 我们会以该属性是否为true来判断是否需要验证登录。',
                }, {
                    id: 3,
                    projectname: '6.22答辩 A3-107 9:00',
                    description: '1.1 嵌入式系统简介 1.1.1 嵌入式系统的定义 内涵上定义：以应用为中心，计算机技术为基础，软、硬件可裁剪，适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 外延上定义：把数字计算机分成通用计算机和嵌入式系统两大类。通用计算机是指如微型计算机（PC）、大型计算机、服务器等，除此指代的计算机称为嵌入式系统。',
                }, {
                    id: 4,
                    projectname: '嵌入式系统',
                    description: '6月20日上午考试，6月25日交实验报告'
                }, {
                    id: 5,
                    projectname: '实验室一项成果（CFS）被计算机系统领域国际顶会EuroSys 2023接收',
                    description: '先进数据系统实验室(Advanced Data Systems Laboratory, ADSL)依托于中国科学技术大学计算机科学与技术学院、国家高性能计算中心（合肥）与高性能计算安徽省重点实验室。团队成员有许胤龙教授、吕自成长江讲座教授、李诚特任研究员、李永坤副教授、吕敏副教授，博士生近20名、硕士生40余名、本科生10余名。'
                }],
                total: 10,
                pages: 1
            }
        }
    } else if (obj.page == 2) {
        return {
            code: 1,
            data: {
                records: [{
                    id: 6,
                    projectname: '现在该第二页了吧',
                    description: '李雨森2013年博士毕业于新加坡南洋理工大学，2013~2016年在南洋理工大学从事博士后研究工作，2016年加入南开-百度联合实验室 (http://nbjl.nankai.edu.cn/)。主要研究领域为并行与分布式系统、计算机体系结构。近些年发表论文50余篇，包括 ACM/IEEE TON、ACM TACO、IEEE TPDS、IEEE TC、IEEE TKDE、IEEE JSAC、IEEE TCSVT、IEEE TMM、ACM TOMM、EuroSys、ACM Multimedia、ACM HPDC、PACT、ACM SPAA、IEEE ICDCS、IEEE IPDPS、ICPP 等相关领域顶级国际期刊和会议。主持/参与国家重点研发计划课题、国家自然科学基金重大项目课题、天津市人工智能重大专项、广东省重点研发课题、国家自然科学基金，天津市自然科学基金，华为、百度、CCF-蚂蚁联合基金等科研项目。'
                }, {
                    id: 7,
                    projectname: 'JSON Web Token',
                    description: '白家驹多年从事系统软件安全性和可靠性研究，主要利用程序分析技术检测操作系统、数据库系统、网络协议栈等系统软件的缺陷和漏洞。以第一作者或通讯作者身份在USENIX ATC、ACM ASPLOS、USENIX Security等系统和安全领域的重要会议期刊上发表20余篇论文，包括CCF-A类论文13篇，CCF-B类论文8篇。主持国家自然科学基金青年科学基金项目、中国博士后基金特别资助项目以及多项企业合作项目等。研制的自动化分析工具在Linux、OpenEuler、FFmpeg、MySQL等主流开源系统软件中发现数千个真实缺陷，相关研究成果应用于华为、腾讯、蚂蚁金服等多家知名企业。'
                }, {
                    id: 8,
                    projectname: '封装登录验证',
                    description: '思路是这样的： 首先我们拦截该请求，获取到该请求中的requireAuth参数，如果参数是true，那么就去获取浏览器中的token，验证当前是否是登录状态。如果存在token，就放行请求；如果没有获取到token，就跳转到登录页面。'
                }, {
                    id: 9,
                    projectname: '这次替农民工站台的只有解放军的媒体、公安的媒体、农民的媒体三家。',
                    description: '【钧正平：群众对党员要求标准高一点，是合理且应该的】当前，主题教育正在全党深入开展，这就要求每一名党员干部要以此为契机对照政治标准、检视自身行为、增强党性觉悟。党员不是普通人，党员身份也更不是个人为了谋求自身发展利益的“身份标签”，而是对与其相关的价值观、理想信念、行为规范的认知。《中国共产党章程》就明确写到：中国共产党党员是中国工人阶级的有共产主义觉悟的先锋战士。作为时代的先锋模范，党员理应是优良道德品行的践行者、普通大众的道德标杆，理应表里如一、知行合一。群众看党员，党员看干部。一名合格的党员就应该经得住群众“看”，经得起实践“验”，不愧对群众信任的目光！'
                }],
                total: 10,
                pages: 2,
            } 
        }
    } else {
        return {
            code: 0
        }
    }
});

Mock.mock('/user/getcand', 'post', (config) => {
    const obj = JSON.parse(config.body);
    // if (obj.projectid)
    return {
        code: 1,
        data: [{
            id: 11,
            candname: '王奕',
            description: '1.2.1 嵌入式微控制器（MCU）\n又称为单片机。微控制器是目前嵌入式系统工业的主流。\n特点：\n单片化，体积大大减小。\n功耗和成本较低，可靠性提高。\n片上外设资源一般比较丰富，适合于控制。\n代表性设备：51单片机、AVR单片机、PIC单片机、Freescale单片机、NXP单片机、TI MSP430单片机、STM8单片机、ARM单片机。',
        },{
            id: 1,
            candname: '王尔',
            description: '1.2.3 嵌入式数字信号处理器（DSP）\n一种非常擅长于高速实现各种数字信号处理运算的嵌入式处理器。\n特点：\n多总线结构\n流水线操作\n专用的硬件乘法器\n特殊的DSP指令\n多机并行运行特性\n快速的指令周期\n低功耗\n高的运算精度',
        },{
            id: 2,
            candname: '王伞',
            description: '1.2.4 嵌入式片上系统（SOC）结合了许多功能模块，将整个系统集成在一个芯片上。并且是可编程系统，是采用FPGA设计的ASIC电路。',
        },{
            id: 3,
            candname: '王思',
            description: '嵌入式系统硬件基本组成\n基本电路：电源、重启电路和时钟电路  一个嵌入式系统电路正常工作需要至少电源、重启（Reset）和时钟电路三部分电路。重启电路主要包括上电重启电路和按钮重启电路。',
        },{
            id: 4,
            candname: '王武',
            description: '江敦涛，男，汉族，1969年5月生，山东青岛人，在职研究生学历，管理学博士，中共党员。\n现任重庆市人民政府副市长、党组成员。曾任共青团即墨市委副书记、书记，共青团青岛市委常委、宣传部部长，共青团青岛市委常委、组织部部长，共青团青岛市委副书记、党组成员。\n2008年10月，山东省青岛市城阳区委常委、组织部部长，城阳区委常委、常务副区长；\n2012年08月，山东省青岛市委组织部副部长；\n2015年03月，山东省青岛市崂山区委副书记、副区长、代区长； [2]\n2015年06月，山东省青岛市崂山区委副书记、区长； [3]\n2016年10月，山东省青岛市崂山区委书记； [4]\n2019年07月，山东省淄博市委书记； [1] [5]\n2022年07月，山东省潍坊市委书记； [5] [9-10]\n2022年12月，山东省潍坊市委书记，潍坊市人大常委会主任；\n2023年01月，重庆市人民政府副市长。 [13-14]',
        },{
            id: 5,
            candname: '王柳',
            description: '嵌入式裸机软件系统 没有专门的操作系统，无操作系统嵌入式软件的具体实现方法有两种：循环轮换和前后台系统。循环轮换：把系统功能分解为若干个不同的任务，然后把它们包含在一个永不结束的循环语句当中，按照顺序逐一执行。当执行完一轮循环后，又回到循环体的开头重新执行。前后台系统： 在循环轮换的基础上，加入了中断处理功能。中断服务程序构成了前台程序，负责处理异步事件。后台程序一般是一个无限循环，负责掌管整个嵌入式系统软、硬件资源的分配、管理以及任务调度。',
        },{
            id: 6,
            candname: '王琦',
            description: 'ARM处理器Cortex-M系列：面向成本敏感的微控制器解决方案 Cortex-M系列面向成本敏感的微控制器提供解决方案，主要针对为控制领域开发。主要芯片包括Cortex-M0、Cortex-M3和Cortex-M4。Cortex-M3基于ARMv7M架构。',
        },{
            id: 7,
            candname: '王霸',
            description: 'Cortex-M3是一个32位处理器内核，采用哈佛结构，拥有独立的指令总线和数据总线，可以让取指与数据访问并行不悖。处理器架构使用三级流水线，带有分支预测功能，提供有可选的内存保护单元，但是没有MMU。',
        },{
            id: 8,
            candname: '王久',
            description: 'Cortex-M3的总线接口 I-Code总线 基于AHB-Lite总线协议的32位取指操作总线。 D-Code总线 基于AHB-Lite总线协议的32位数据访问总线。 系统总线 基于AHB-Lite协议的特定内存地址的数据传送。外部私有外设总线 基于APB总线协议的32位总线，负责特定内存范围的私有外设访问。',
        },{
            id: 9,
            candname: '溢初',
            description: '链接寄存器（LR）R14 链接寄存器用于在调用子程序时存储返回地址，也可用于异常返回。',
        }]
    }
});

Mock.mock('/user/getpubkey', 'post', (config) => {
    return {
        code: 1,
        data: "9093104015216972713264416629759332167346658630770376881655430372900024142291535350553847085849028837334446524364196935361703199301418836194304150529298389/65537"
    }
});

// this.e = bigInt("9093104015216972713264416629759332167346658630770376881655430372900024142291535350553847085849028837334446524364196935361703199301418836194304150529298389");
// this.d = bigInt("801787918701421808547488405011241600348726727841743067349227432860765895788121227454833324215212713089401456857399548928149549106948484482012009974128073");
// this.rsaN = bigInt(65537);

Mock.mock('/user/getmessage', 'post', (config) => {
    // 拿到 MessageSet
    return {
        code: 1,
        data: 2
    }
});

let getvoteNumCallTime = 0;
Mock.mock('/user/getvotenum', 'post', (config) => {
    const obj = JSON.parse(config.body);
    if (obj.candid % 2 == 0) {
        return {
            code: 1,
            data: {
                votenum: (++getvoteNumCallTime),
            }
        }
    } else {
        return {
            code: 1,
            data: { 
                votenum:3, 
            }
        }
    }
});